[*] '/mnt/e/work/PWN/nssctf/100/[CISCN 2019华北]PWN1' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000)
v2 = 0.0; puts("Let's guess the number."); gets(v1); if ( v2 == 11.28125 ) return system("cat /flag"); else returnputs("Its value should be 11.28125");
对v2进行赋值11.28125 就可以return出flag
v1可以栈溢出
1 2 3 4 5 6 7 8 9 10 11 12 13 14
-0000000000000030 ; D/A/* : change type (data/ascii/array) -0000000000000030 ; N : rename -0000000000000030 ; U : undefine -0000000000000030 ; Use data definition commands to create local variables and function arguments. -0000000000000030 ; Two special fields " r" and " s" represent return address and saved registers. -0000000000000030 ; Frame size: 30; Saved regs: 8; Purge: 0 -0000000000000030 ; -0000000000000030 -0000000000000030 var_30 db 44 dup(?) -0000000000000004 var_4 dd ? +0000000000000000 s db 8 dup(?) +0000000000000008 r db 8 dup(?) +0000000000000010 +0000000000000010 ; end of stack variables
Gadgets information ============================================================ 0x000000000040078c : pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret 0x000000000040078e : pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000400790 : pop r14 ; pop r15 ; ret 0x0000000000400792 : pop r15 ; ret 0x000000000040078b : pop rbp ; pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret 0x000000000040078f : pop rbp ; pop r14 ; pop r15 ; ret 0x00000000004005e0 : pop rbp ; ret 0x0000000000400793 : pop rdi ; ret 0x0000000000400791 : pop rsi ; pop r15 ; ret 0x000000000040078d : pop rsp ; pop r13 ; pop r14 ; pop r15 ; ret 0x0000000000400501 : ret